package eMdP;

import com.jme.input.InputSystem;
import com.jme.input.joystick.JoystickInput;
import com.jme.system.DisplaySystem;
import com.jmex.bui.BuiSystem;
import com.jmex.game.StandardGame;
import com.jmex.game.state.GameStateManager;

import eMdP.gestors.GestorFitxers;
import eMdP.gestors.GestorPantalla;
 
public class ElMensajeroDePekin
{	
	private static StandardGame _joc;
	private static int[] resolucio;
	private static boolean so;
	private static boolean pantallaCompleta;
	private static String[] controls;

	public static void main(String[] args) throws InterruptedException {
		JoystickInput.setProvider( InputSystem.INPUT_SYSTEM_LWJGL );
		
		_joc = new StandardGame("El Mensajero De Pekin");
		valorsConfiguracioPerDefecte();
		carregaConfiguracio();
		_joc.start();
		
		GestorPantalla.gestioPantalla();
	}
	
	public static void exit() {    	
		_joc.shutdown();
	}
    
	public static int[] getResolucio() {
		return resolucio;
	}

	public static void setResolucio(int[] resolucio) {
		ElMensajeroDePekin.resolucio = resolucio;
	}

	public static boolean isSo() {
		return so;
	}

	public static void setSo(boolean so) {
		ElMensajeroDePekin.so = so;
	}

	public static boolean isPantallaCompleta() {
		return pantallaCompleta;
	}

	public static void setPantallaCompleta(boolean pantallaCompleta) {
		ElMensajeroDePekin.pantallaCompleta = pantallaCompleta;
	}
	
	public static String[] getControls() {
		return controls;
	}

	public static void setControls(String[] controls) {
		ElMensajeroDePekin.controls = controls;
	}

	private static void valorsConfiguracioPerDefecte()
	{
		int[] valors;
		resolucio = new int[2];
		valors = GestorFitxers.llegirConfiguracio();
		
		if(valors[0] != -1)
			resolucio[0] = valors[0];
		else
			resolucio[0] = 800;
		
		if(valors[1] != -1)
			resolucio[1] = valors[1];
		else
			resolucio[1] = 600;
		
		if(valors[2] != -1)
			pantallaCompleta = (valors[2] != 0);
		else
			pantallaCompleta = false;
		
		if(valors[3] != -1)
			so = (valors[3] != 0);
		else
			so = true;
	}
	
    private static void carregaConfiguracio()
    {	
    	_joc.getSettings().setWidth(resolucio[0]);
    	_joc.getSettings().setHeight(resolucio[1]);
    	//_joc.getSettings().setFullscreen(pantallaCompleta);
    	_joc.getSettings().setMusic(so);
    	_joc.getSettings().setSamples(4);
    }
    
    public static void reinicia()
    {
    	carregaConfiguracio();
    	GestorPantalla.esborraLlista();
    	GameStateManager.getInstance().detachAllChildren();
    	System.out.println("Numero d'estats guardats: "+GameStateManager.getInstance().getQuantity());
    	
    	_joc.reinit();
    	
    	GestorPantalla.gestioPantalla();
    	for(int i=0;i<GestorPantalla.getLlista().size();i++)
    		System.out.println(GestorPantalla.getLlista().get(i).getName());
    	for(int i=0;i<GameStateManager.getInstance().getChildren().size();i++)
    		System.out.println(GameStateManager.getInstance().getChildren().get(i).getName());
    }
}